<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
//     下定义方式是否正确
// 5秒

let person = { 
    "name": "Nicholas", 
    "age": 29, 
    5: true,
    [1]:1,
	true: 123,
    false: 321
};
// 以下定义方式是否正确
// 5秒

let person = { 
    "name": "Nicholas", 
    "age": 29, 
    5: true,
    {a:1}:1,
	true: 123,
    false: 321
};
// 以下访问方式是否正确
// 5秒

let person = {
    5:15,
    true: 'yes',
    false: 'no'
};
person.5;	// ?
person.true;	// ?
person.false;	// ?
// 请给出结果
// 5秒

function person(){}
person.__proto__ === ?
// 请给出结果
// 5秒

function person(){}
var p = new person;
p.__proto__ === ?
// 请给出结果
// 5秒

function person(){}
var p = new person;
p.prototype === ?
// 请给出结果
// 10秒

function person(){}
var p = new person;
p.__proto__.__proto__.__proto__ === ?
// 请给出结果
// 5秒

let colors = Array(5);
colors[0]	//?
// 请给出结果
// 5秒

let ages = [,,,];
ages.lenth	//?
// 请给出结果
// 5秒

let cats = [1,2,,,5];
cats.length	//?
// 请给出打印结果
// 10秒

const arrayLikeObject = { 3: 1, 1: 2, 2: 3, 0: 4, length:4 };
console.log(Array.from(arrayLikeObject));
// 请给出打印结果
// 5秒

const arrayLikeObject = { a:1, b:2, length:3 };
console.log(Array.from(arrayLikeObject));
// 请给出打印结果
// 5秒

const zeroes = [0, 0, 0, 0, 0];
zeroes.fill(8, -4, -1); 
// 请给出排序结果
// 10秒

let values = [15, 1, 10, 5, 0];
values.sort(function (value1, value2) {
    if (value1 < value2) {
        return value1 - value2;
    }
    else if (value1 > value2) {
        return value1 - value2;
    }
    return 0;
});
// 请给出打印结果
// 5秒

let colors = ["a"]; 
let colors2 = colors.concat("b", ["c", ["d"]]);
console.log(colors2)
// 请给出打印结果
// 5秒

let n = [1,2,3,4,5];
console.log(n.slice(-3));
// 请给出打印结果
// 10秒

let n = [1,2,3,4,5];
let result = n.splice(-2,3,6,7,8);
console.log(n);
console.log(result);
// 请给出正确下标
// 5秒

[1,2,3,1,5,7,1,5].lastIndexOf(1, -3);
// 判断条件是否成立
// 5秒

[{ age: 20 }, { age: 18 }, { age: 10 }].every(function (item,index) {
	return item.age > index * 5;
});
// 请给出打印结果
// 5秒

let numbers = [{ a: 1 }, { a: 2 }, { a: 3 }];
numbers.forEach((item, index, array) => {
    console.log(item.a * index);
    return;
});
// 请给出打印结果
// 5秒

let ary = [1, [2, [3, [4, 5]]], 6];
console.log(ary.flat());
// 请分别给出打印结果
// 8秒

let numbers = [1, 2, 3, 4, 5];
let length = numbers.unshift(7, 8, 9);
console.log(length);
console.log(numbers);
// 代码题
// 30秒

let objs = [{ count: 20 }, { count: 66 }, { count: 16 }, { count: 30 }, { count: 5 }, { count: 20 }, { count: 66 }];
//使用objs打印 "5,16,20,30,66"
// 请给出打印结果
// 10秒

let person = {};
Object.defineProperties(person, {
    name: {
        enumerable: false
    },
    sex: {
        enumerable: true
    },
    age: {
        enumerable: true
    }
});

console.log(Object.getOwnPropertyNames(person));
// 请给出打印结果
// 10秒

let person = { name: '张三', age: 27, sex: null };
let { name, job = '程序员', sex = '男' } = person;
console.log(name, job, sex)
// 请给出打印结果
// 5秒

function Person() { }
Person.prototype.name = "李四";

var p = new Person();
var p1 = new Person();
p.name = '张三';
console.log(p1.name);
// 请写个组合继承
// 30秒

function human() {}
function person() {}	//person继承human
// 请给出打印结果
// 10秒

{
    init = 4;
    function init() { }
    init = 3;
    console.log(init);  // ?
    function init() { }
    init = 5;
    function init() { }
}
console.log(init);  // ?
// 请给出打印结果
// 15秒

var a = 123;
function parent() {
    var a = 321;
    function child() {
        console.log(a);	//?
    }
    child();
    return child;
}
const p = parent();
p();
// 请给出打印结果
// 15秒

var a = 123;
function parent() {
    var a = 321;
    function child() {
        console.log(a);		//?
    }
    child();
    return child
}
const child = parent();
var obj = {
    a: 555,
    child: child
}
obj.child(); 
// 请给出打印结果
// 30秒

function test(a, b) {
    console.log(a);
    console.log(b);
    var b = 234;
    console.log(b);
    a = 123;
    console.log(a);
    function a() { }
    var a;
    b = 234;
    var b = function () { }
    console.log(a);
    console.log(b);
}
test(1);
// 请写出打印结果
// 30秒

function foo() {
    console.log(this);	//?
    console.log(this.a);	//?
}
var obj = {
    a: 2
}
var obj1 = {
    a: 20
}
var f = foo.bind(obj);
f = f.bind(obj1);
f();
// 请给出打印结果
// 15秒

function foo() {
    console.log(this.a);
}
function doFoo(fn) {
    fn();
}
var obj = {
    a: 2,
    foo: foo
}
var obj1 = {
    a: 3,
    obj: obj
}
var a = 'this is global';
obj1.obj.foo();	//?
doFoo(obj1.obj.foo); //?
// 请给出打印结果
// 30秒

function foo(a) {
    this.a = a;
}
var obj1 = {
    foo: foo
}
var obj2 = {}
obj1.foo(2);
console.log(obj1.a);    //?
obj1.foo.call(obj2, 3);
console.log(obj2.a);    //?
var bar = new obj1.foo(4);
console.log(obj1.a);    //?
console.log(bar.a); //?
// 请给出打印结果
// 15秒

Promise.resolve().then(() => {
	console.log(1);
	const timer2 = setTimeout(() => {
		console.log(2)
	}, 0)
});
const timer1 = setTimeout(() => {
	console.log(3)
	Promise.resolve().then(() => {
		console.log(4)
	})
}, 0)
console.log(5);
// 请给出打印结果
// 15秒

const promise = new Promise((resolve, reject) => {
	console.log(1);
	setTimeout(() => {
		console.log(5);
		resolve(6);
		console.log(7);
	}, 0);
	console.log(2);
});
promise.then((res) => {
	console.log(res);
});
console.log(4);
// 请给出打印结果
// 15秒

async function async1() {
	console.log('1')
	await async2()
	console.log('2')
}

async function async2() {
	console.log('3')
}

console.log('4')

setTimeout(function() {
	console.log('5')
})

async1()

new Promise(function(resolve) {
	console.log('6')
	resolve()
}).then(function() {
	console.log('7')

})

console.log('8');
// 请给出打印结果
// 15秒

const promise1 = new Promise((resolve, reject) => {
	setTimeout(() => {
		resolve('1')
	}, 1000)
})
const promise2 = promise1.then(() => {
	throw new Error('2')
})

console.log('3', promise1)
console.log('4', promise2)

setTimeout(() => {
	console.log('5', promise1)
	console.log('6', promise2)
}, 2000)
// 请给出打印结果
// 20秒

async function async1() {
    console.log( '1' )
    console.log(await async2())
    console.log( '2' )
}
async function async2() {
    console.log('3')
    setTimeout(
      ()=>console.log('4')
    ,0)
    console.log( '5' )
}
console.log( '6' )
setTimeout( function () {
    console.log( '7' )
}, 0 )
async1();
new Promise( function ( resolve ) {
    console.log( '8' )
    resolve();
} ).then( function () {
    console.log( '9' )
} )
console.log( '10' )
// 代码题
// 0秒

let names = [
    { age: 40 },
    { age: 20 },
    { age: 10 },
    { age: 60 },
    { age: 50 },
    { age: 30 },
]
//使用 names 打印 "6 5 4 4 5 6"
// 代码题
// 30秒

// 使用 figure 打印 "9 8 C 6 5"
let figure = [1, 3, 5, 7, [9, [0, 2, [4, 6, [8, 8, 8]]]]];
// 代码题
// 30秒

var data = [{
    count: 12,
    children: [
        {
            count: 15
        },
        {
            count: 3
        }
    ]
},
{
    count: 1,
    children: [
        {
            count: 32
        },
        {
            count: 26
        }
    ]
}];
//打印[1, 4, 14, 18, 30, 37]
// 代码题
// 30秒

let objs = [{ a: 33 }, { a: 66 }, { a: 17 }, { a: 33 }, { a: 5}, { a: 50 }, { a: 66 }, { a: 20 },{a:4},{a:3},{a:2},{a:1}] 
//打印 66 50 33 20 17 10 10 10 10 1
// 代码题
// 30秒

var objs = [{ count: 20 }, { count: 66 }, { count: 16 }, { count: 30 }, { count: 5 }, { count: 20 }, { count: 66 }];
"20,16,5,66"
// 请给出弹出结果
// 15秒

alert(a);
a(); 
var a = 3;
function a() {
    alert(10);
}
alert(a);
a = 6;
a();
// 简答题
// 30秒

// 请简述sessionstorage和localstorage的区别？
// 简答题
// 30秒

// 请简述三种垂直居中的方式
// 简答题
// 30秒

// v-model和.sync修饰符有什么区别？实现原理是什么？
// 简答题
// 30秒

// url-loader和file-loader的区别？url-loader常用的配置项有哪些？请至少列举两种。
// 简答题
// 30秒

// webpack中自动生成html的插件是哪个？怎么配置模板和输出文件名？
</script>